﻿using System;
using System.ServiceModel;

namespace EntregaCatedraCarreras
{
    [ServiceContract]
    public interface IServicioCarreras
    {
        /// <summary>
        /// Operación para realizar una apuesta de carreras de caballos.
        /// Recibe el nombre del hipodromo, fecha, nº de carrera y nº de caballo.
        /// </summary>
        /// <param name="hipodromo">Nombre del hipódromo, no puede ser vacío.</param>
        /// <param name="fecha">Fecha de la carrera, debe ser mayor al día actual.</param>
        /// <param name="carrera">Número de carrera, entre 1 y 99.</param>
        /// <param name="caballo">Número del caballo, entre 1 y 99.</param>
        /// <returns>Identificador único de la apuesta realizada. Devuelve Guid.Empty si la apuesta no es válida.</returns>
        [OperationContract]        
        Guid RealizarApuesta(string hipodromo, DateTime fecha, int carrera, int caballo);

        /// <summary>
        /// Operación que verifica si una apuesta tiene premio y devuelve el monto del mismo.
        /// </summary>
        /// <param name="identificadorApuesta">Identificador único de la apuesta.</param>
        /// <returns>Monto que corresponde pagar si la apuesta tiene premio, 0 si no tiene premio.</returns>
        [OperationContract]
        double CorrespondePremio(Guid identificadorApuesta);

        /// <summary>
        /// Operación para notificar que una apuesta ya ha sido pagada.
        /// </summary>
        /// <param name="identificadorApuesta">Identificador único de la apuesta.</param>
        [OperationContract]
        void EfectuarPago(Guid identificadorApuesta);
    }
}
